package com.whfc.wxmp.api.quality.service;

import com.whfc.common.result.PageVO;
import com.whfc.entity.dto.statistics.CheckDetailDTO;
import com.whfc.entity.dto.statistics.CheckStatisticsDTO;
import com.whfc.entity.param.check.CheckSearchParam;
import com.whfc.fuum.dto.SysUserDTO;
import com.whfc.fuum.entity.SysUser;
import com.whfc.fuum.entity.WxUser;
import com.whfc.quality.dto.QualityCheckDescDTO;
import com.whfc.quality.dto.QualityCheckListDTO;
import com.whfc.quality.dto.QualityCheckStatisticalDTO;
import com.whfc.quality.param.QualityCheckLogParam;
import com.whfc.quality.param.QualityCheckParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.List;

/**
 * @Description 质量问题接口
 * @Author hw
 * @Date 2020/7/30 10:54
 * @Version 1.0
 */
public interface WxQualityCheckService {

    /**
     * 使用机构ID查询质量问题上报信息(分页)
     *
     * @param deptId
     * @param type
     * @param pageNum
     * @param pageSize
     * @param phone
     * @param state
     * @param urgency
     * @param overdue
     * @param startTime
     * @param endTime
     * @return
     */
    QualityCheckListDTO getCheckList(Integer deptId, String type, Integer pageNum, Integer pageSize, String phone, String state, String urgency, String overdue, Date startTime, Date endTime);

    /**
     * 使用问题上报id查询问题详情
     *
     * @param checkId 问题上报ID
     * @param user    登录用户信息
     * @return
     * @author hw
     * @date 2020/8/3 14:21
     **/
    QualityCheckDescDTO getCheck(Integer checkId, WxUser user);

    /**
     * 问题上报接口
     *
     * @return: null
     * @Author hw
     * @Date 2020/7/30
     **/
    void add(QualityCheckParam checkParam, SysUser sysUser);

    /**
     * 质量问题处理流程
     *
     * @Param:
     * @Return:
     * @Author hw
     * @Date 2020/7/31 9:53
     **/
    void addCheckLog(QualityCheckLogParam qualityCheckLogParam, String userPhone);

    /**
     * 查询统计信息
     *
     * @param deptId 组织机构ID
     * @param time   时间
     * @return
     * @author hw
     * @date 2020/8/3 19:34
     **/
    QualityCheckStatisticalDTO statistical(Integer deptId, Date time);

    /**
     * 使用组织机构id查询人员信息
     *
     * @Date 2020/7/31 10:27
     * @Param:
     * @Return:
     * @Author hw
     **/
    List<SysUserDTO> sysUserList(Integer deptId, String keyword);

    /**
     * 质量问题图片上传接口
     *
     * @Param:
     * @Return:
     * @Author hw
     * @Date 2020/7/31 10:40
     **/
    String uploadImg(MultipartFile file);

    /**
     * 统计
     *
     * @param param
     * @return
     */
    CheckStatisticsDTO getCheckStatistics(CheckSearchParam param);

    /**
     * 分页
     *
     * @param param
     * @return
     */
    PageVO<CheckDetailDTO> getCheckPage(CheckSearchParam param);

}
